#ifndef QUOTESERVICE_H
#define QUOTESERVICE_H

#include <QObject>
#include <QString>
#include <QStringList>
#include <QTimer>
#include "service_global.h"
/**
 * @brief 语录服务类
 * 
 * 负责管理和提供励志语录功能：
 * - 从文件加载语录
 * - 提供随机语录
 * - 定时自动更换语录
 */
class SERVICE_EXPORT QuoteService : public QObject
{
    Q_OBJECT

public:
    /**
     * @brief 获取单例实例
     */
    static QuoteService& instance();

    /**
     * @brief 获取当前语录
     */
    QString getCurrentQuote() const;

    /**
     * @brief 获取随机语录
     */
    QString getRandomQuote();

    /**
     * @brief 开始定时更换语录
     * @param intervalMinutes 更换间隔（分钟）
     */
    void startAutoChange(int intervalMinutes = 30);

    /**
     * @brief 停止定时更换语录
     */
    void stopAutoChange();

    /**
     * @brief 重新加载语录列表
     */
    void reloadQuotes();

    /**
     * @brief 获取语录总数
     */
    int getQuoteCount() const;

signals:
    /**
     * @brief 语录已更换信号
     * @param newQuote 新的语录
     */
    void quoteChanged(const QString& newQuote);

private:
    explicit QuoteService(QObject *parent = nullptr);
    ~QuoteService();

    // 禁止拷贝
    QuoteService(const QuoteService&) = delete;
    QuoteService& operator=(const QuoteService&) = delete;

    /**
     * @brief 从文件加载语录
     */
    void loadQuotesFromFile();

    /**
     * @brief 从默认语录初始化
     */
    void initDefaultQuotes();

private slots:
    /**
     * @brief 定时器触发，更换语录
     */
    void onTimerTimeout();

private:
    QStringList m_quotes;           // 语录列表
    QString m_currentQuote;         // 当前语录
    QTimer* m_timer;                // 定时器
    int m_lastIndex;                // 上次使用的索引（避免连续重复）
};

#endif // QUOTESERVICE_H

